package com.dubbo.todoit;

import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.extension.ExtensionLoader;
import com.dubbo.inter.SpiUpInterface;

/**
 * @author quanlong.chan
 * @Title: DubboUpSpi
 * @Description:
 * @date 2019/8/1 15:36
 */
public class DubboUpSpi {

    //Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();

    public static void main(String[] args) {

        ExtensionLoader<SpiUpInterface> loader = ExtensionLoader.getExtensionLoader(SpiUpInterface.class);

        SpiUpInterface inter = loader.getAdaptiveExtension();

        URL urlA = URL.valueOf("test://localhost/test?key=hookA");
        URL urlB = URL.valueOf("test://localhost/test?key=hookB");

        System.out.println(inter.echo("", urlA));
        System.out.println(inter.invoke("", urlB));
    }
}


/**
 * 1. @SPI注解中的value是默认值，如果通过URL获取不到关于取哪个类作为Adaptive类的话，就使用这个默认值，当然如果URL中可以获取到，就用URL中的。
 * 2. 可以再方法上增加@Adaptive注解，注解中的value与链接中的参数的key一致，链接中的key对应的value就是spi中的name,获取相应的实现类
 **/